#ifndef CMM_INIT_FILE_H
#define CMM_INIT_FILE_H
#include <iostream>
#include "./location.h"
#include "./memory.h"
#include "./operation.h"
void init_file(int point){
	pw p;
	do{
		p=read_word(point);
		if(p.word=="/"){
			point=p.e_p;
			p=read_word(point);
			if(p.word=="*"){
				while(1){
					point=p.e_p;
					p=read_word(point);
					if(p.word=="*"){
						point=p.e_p;
						p=read_word(point);
						if(p.word=="/")break;
					}
					if(point>length_of_file)prog_error(point,7);
				}
			}
			if(p.word=="/"){
				while(1){
					point=p.e_p;
					p=read_word(point);
					if(p.word=="\n"||p.word=="\0")break;
					if(point>length_of_file)prog_error(point,7);
				}
			}
		}
		if(p.word=="#"){
			do{
				point=p.e_p;
				p=read_word(point);
			}while(!((file[point]>='a'&&file[point]<='z')||
			(file[point]>='A'&&file[point]<='Z')||file[point]=='_'));
			if(p.word=="PAUSE"){
//				printf("--------------------\n");
//				printf("Point:%d\n",point);
//				system("pause");
			}
		}
		else if(p.word=="}"){
//			if(prog_stack.top().word=="{")prog_stack.pop();
//			else prog_error(prog_stack.top().s_p,4);
		}
		else if(p.word==")"){
//			while(!prog_stack.empty()&&
//			prog_stack.top().word!="(")prog_stack.pop();
//			if(!prog_stack.empty()&&
//			prog_stack.top().word=="(")prog_stack.pop();
//			else if(prog_stack.empty())prog_error(-1,5);
//			else prog_error(prog_stack.top().s_p,5);
		}
		else if(p.word==key_words[1]){
			point=p.e_p;
			p=read_word(point);
			while(!((p.word[0]>='a'&&p.word[0]<='z')||
			(p.word[0]>='A'&&p.word[0]<='Z')||p.word[0]=='_')){
				point=p.e_p;
				p=read_word(point);
			}
//			M[p.word]=value_wtype(key_words[1],0LL);
//			prog_stack.push(p);
		}
		else if(p.word==key_words[2]){
			point=p.e_p;
			p=read_word(point);
			while(!((p.word[0]>='a'&&p.word[0]<='z')||
			(p.word[0]>='A'&&p.word[0]<='Z')||p.word[0]=='_')){
				point=p.e_p;
				p=read_word(point);
			}
//			M[p.word]=value_wtype(key_words[2],init_for_char);
//			prog_stack.push(p);
		}
		else if(p.word==key_words[3]){
			point=p.e_p;
			p=read_word(point);
			while(!((p.word[0]>='a'&&p.word[0]<='z')||
			(p.word[0]>='A'&&p.word[0]<='Z')||p.word[0]=='_')){
				point=p.e_p;
				p=read_word(point);
			}
//			M[p.word]=value_wtype(key_words[3],"");
//			prog_stack.push(p);
		}
		else if(p.word==key_words[5]){
//			if(M[prog_stack.top().word].type==key_words[1]){
//				while(!((p.word[0]>='0'&&p.word[0]<='9')||p.word[0]=='-')){
//					point=p.e_p;
//					p=read_word(point);
//				}
//				M[prog_stack.top().word]=
//				value_wtype(key_words[1],stoll(p.word));
//			}
//			else if(M[prog_stack.top().word].type==key_words[3]){
//				point=p.e_p;
//				p=read_string(point);
//				M[prog_stack.top().word]=
//				value_wtype(key_words[3],p.word);
//			}
		}
		else if(p.word==key_words[6]){
			while(p.word!="("){
				point=p.e_p;
				p=read_word(point);
			}
			while(!((file[point]>='a'&&file[point]<='z')||
	(file[point]>='A'&&file[point]<='Z')||file[point]=='_'
	||file[point]=='-'||(file[point]>='0'&&file[point]<='9')||p.word[0]=='\"')){
				point=p.e_p;
				p=read_word(point);
			}
//			if((p.word[0]>='0'&&p.word[0]<='9')||p.word[0]=='-')
//				cout<<p.word;
//			else if(p.word[0]=='\"'){
//				p=read_string(point);
//				cout<<p.word;
//			}
//			else if(M[p.word].type==key_words[1])
//				printf("%lld",M[p.word].int_type);
//			else if(M[p.word].type==key_words[3])
//				cout<<M[p.word].string_type;
			while(p.word!=")"){
				point=p.e_p;
				p=read_word(point);
			}
		}
		else if(p.word==key_words[7]){
			while(p.word!="("){
				point=p.e_p;
				p=read_word(point);
			}
			while(!((file[point]>='a'&&file[point]<='z')||
	(file[point]>='A'&&file[point]<='Z')||file[point]=='_'
	||file[point]=='-'||(file[point]>='0'&&file[point]<='9')||p.word[0]=='\"')){
				point=p.e_p;
				p=read_word(point);
			}
//			if(M[p.word].type==key_words[1]){
//				sole_buffer.type=key_words[1];
//				scanf("%lld",&sole_buffer.int_type);
//				buffer.push(sole_buffer);
//				M[p.word]=buffer.front();
//				buffer.pop();
//			}
//			else if(M[p.word].type==key_words[3]){
//				sole_buffer.type=key_words[3];
//				cin>>sole_buffer.string_type;
//				buffer.push(sole_buffer);
//				M[p.word]=buffer.front();
//				buffer.pop();
//			}
			while(p.word!=")"){
				point=p.e_p;
				p=read_word(point);
			}
		}
//		else if(p.word==key_words[8])cout<<endl;
		else if(p.word==";"){
//			while(!prog_stack.empty()&&
//			prog_stack.top().word!=";"&&
//			prog_stack.top().word!="{")prog_stack.pop();
		}
		else if(p.word==key_words[9]){
			do{
				point=p.e_p;
				p=read_word(point);
			}while(!((file[point]>='a'&&file[point]<='z')||
			(file[point]>='A'&&file[point]<='Z')||file[point]=='_'));
			S[p.word]=p.e_p;
		}
		else if(p.word==key_words[10]){
			do{
				point=p.e_p;
				p=read_word(point);
			}while(!((file[point]>='a'&&file[point]<='z')||
			(file[point]>='A'&&file[point]<='Z')||file[point]=='_'));
//			point=S[p.word];
//			continue;
		}
		else if(p.word==key_words[13]){
			do{
				point=p.e_p;
				p=read_word(point);
			}while(!((p.word[0]>='0'&&p.word[0]<='9')||p.word[0]=='-'));
//			exit(stoll(p.word));
		}
		else if(p.word==key_words[14]){
			while(p.word!="("){
				point=p.e_p;
				p=read_word(point);
			}
			while(!((file[point]>='a'&&file[point]<='z')||
	(file[point]>='A'&&file[point]<='Z')||file[point]=='_'
	||file[point]=='-'||(file[point]>='0'&&file[point]<='9')||p.word[0]=='\"')){
				point=p.e_p;
				p=read_word(point);
			}
//			if((p.word[0]>='0'&&p.word[0]<='9')||p.word[0]=='-'){
//				assignment(return_value,p.word);
//				return return_value;
//			}
//			else if(p.word[0]=='\"'){
//				p=read_string(point);
//				assignment(return_value,p.word);
//				return return_value;
//			}
//			else if(M[p.word].type==key_words[1]){
//				assignment(return_value,M[p.word].int_type);
//				return return_value;
//			}
//			else if(M[p.word].type==key_words[2]){
//				assignment(return_value,M[p.word].char_type);
//				return return_value;
//			}
//			else if(M[p.word].type==key_words[3]){
//				assignment(return_value,M[p.word].string_type);
//				return return_value;
//			}
			while(p.word!=")"){
				point=p.e_p;
				p=read_word(point);
			}
		}
//		else if(p.word!=" "&&p.word!="\n"&&p.word!="\t")prog_stack.push(p);
		point=p.e_p;
	}while(point<length_of_file);
//	if(func_name==key_words[0])return 0;
//	return return_number;
}
#endif /*!H*/
